iT邦幫忙

2025 iThome 鐵人賽

DAY 1
2
Software Development

ClickHouse 系列:從資料庫底層架構到軟體應用實踐系列 第 1

Day 1|ClickHouse 系列:ClickHouse 是什麼?與傳統 OLAP/OLTP 資料庫的差異

  • 分享至 

  • xImage
  •  

ClickHouse 是由 Yandex 開發的 開源分布式列式資料庫管理系統(Column-oriented DBMS)。

主要針對 即時數據分析 (Real-Time Analytics) 場景設計,能夠在秒級內處理 PB 級數據。

架構

ClickHouse Architecture

ClickHouse 的整體設計邏輯非常清晰:以高效能讀取為核心,透過分散式架構與儲存最佳化,讓秒級查詢在 PB 級數據中成為可能。
從資料寫入、儲存、索引到查詢回傳,ClickHouse 有著一套完全為 OLAP 場景最佳化的底層架構。

我們可以將流程稍微簡化成以下步驟:

資料寫入 → 拆分成 Data Parts → Partition 劃分 → Primary Key 排序 → 壓縮 → Merge → 索引裁剪 → 向量化查詢 → 回傳結果

看不懂?沒關係,追完系列文章就全都懂了 😎

圖片取自 Architecture Overview

特色 & 特性

ClickHouse 技術特性 說明
Columnar Storage 只讀取需要的欄位,避免不必要的 I/O。
Vectorized Execution 將資料轉成 SIMD 批次處理,加速 CPU 運算效率。
Compression 各種編碼方式 (LZ4, ZSTD, Delta Encoding) 提供高壓縮比,降低儲存成本。
Data Skipping Indexes 不需掃描全部資料,可根據索引直接跳過不相關的數據區塊,查詢更快。
MergeTree 儲存引擎 強大靈活的底層結構,支援分區、排序鍵、TTL 清理機制,適合大量數據分析。
Materialized Views 可將複雜查詢結果預先計算並實時更新,大幅加快查詢速度。
分布式架構 支援 Sharding 與 Replica ,易於擴展到 PB 級數據處理規模。
Near-Real-Time Ingestion 支援高吞吐量寫入 (如 Kafka Stream),數據可秒級查詢分析。

OLAP v.s. OLTP 基本概念

分類 OLTP (Online Transaction Processing) OLAP (Online Analytical Processing)
主要用途 交易處理 (CRUD 操作) 數據分析、統計報表
操作特性 少量資料的頻繁寫入 大量資料的批次查詢
查詢型態 單筆/少量記錄查詢 大範圍聚合查詢 (Aggregation)
儲存結構 行式存儲 (Row-based) 列式存儲 (Column-based)
代表產品 MySQL, PostgreSQL, Oracle ClickHouse, Druid, Redshift

ClickHouse 與傳統 OLAP 資料庫的差異

項目 ClickHouse 傳統 Data Warehouse (如 Oracle DW, Teradata)
架構 分布式列式存儲 多數為行式存儲或需額外配置列式引擎
查詢速度 毫秒級到秒級回應 通常需數秒到數分鐘
硬體需求 可用商用硬體 多數需昂貴專用伺服器
成本 開源免費/雲端計價模式 軟硬體成本高昂
延展性 支援線性水平擴展 (Sharding/Replication) 擴展成本高

ClickHouse 與 OLTP 資料庫(如 MySQL, PostgreSQL)的差異

  1. OLTP 資料庫在於 ACID 交易完整性、寫入頻繁的即時處理。
  2. ClickHouse 更適合「大量讀取查詢」且「不需要頻繁即時修改」的場景(如報表查詢、BI 分析)。
  3. OLTP 常見的 UPDATE/DELETE 操作在 ClickHouse 中屬於非即時(Mutation 機制)。

結語

各位好,我是 Vic,這是我第一次投遞鐵人賽,會有參賽的原因是因為實習有用到 ClickHouse 這個資料庫服務,於是便一股腦鑽進來學習了,這個系列會著重於底層設計架構、優化...等細節,程式碼展示篇幅較少,內容應該會滿硬的XD(當然,我也同時在學習中),若你對這個系列感興趣,歡迎到我的部落格,上面更新速度比較快 XD,也會有其他的主題出現,對 軟體/前端/後端/AI Agent 開發有研究歡迎 Connect!


下一篇
Day 2|ClickHouse 系列:ClickHouse 為什麼選擇 Column-based 儲存?講解 Row-based 與 Column-based 的核心差異
系列文
ClickHouse 系列:從資料庫底層架構到軟體應用實踐30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Wolke
iT邦研究生 4 級 ‧ 2025-10-10 16:35:20

Vic 您好!非常感謝您在鐵人賽分享 ClickHouse 的系列文章,這篇開宗明義的介紹非常詳盡且易懂!

文章清楚地闡述了 ClickHouse 作為一個專為即時數據分析設計的 OLAP 資料庫,其列式儲存、向量化執行、高效壓縮等特色,如何結合分散式架構達到秒級查詢 PB 級數據。您整理的 OLAP/OLTP 基本概念以及 ClickHouse 與傳統資料庫的差異比較,對於像我這樣想快速掌握其核心價值與應用場景的讀者來說,提供了非常清晰的指引。

特別期待您後續深入探討底層設計架構與優化細節,相信這些內容對於實務應用上會非常有啟發。再次感謝您的用心分享!

也歡迎版主有空參考我的系列文「南桃AI重生記」:
https://ithelp.ithome.com.tw/users/20046160/ironman/8311

我要留言

立即登入留言